package io;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/**
 * 使用缓冲字符输入流BufferedReader按行读取字符串
 * 内部默认维护一个8192长的char数组，可以块读文本数据保证读取效率
 * 提供了readLine()方法可以按行读取字符串
 */
public class BrDemo {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("./src/io/BrDemo.java");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);

        /*
         * readLine()读取一行字符串
         * 1)内部实现:
         *   首先第一次调用readLine时，会一次性读取8192个字符存入内部数组中
         *   然后从数组第1个字符开始读取，直到遇到\n换行符为止，会将读取到的内容以一个字符串形式返回
         * 2)返回结果:
         *   2.1)读到\n换行符，返回一行字符串
         *   2.2)读到空行，则返回空字符串
         *   2.3)读到了末尾，则返回null
         */
        String line;
        while((line=br.readLine())!=null){
            System.out.println(line);
        }
        br.close();
    }
}















